import java.util.Random;
public class Raster
{
    private Lebewesen[][] matrix; //Zweidimensionales "Lebewesen"-Array bzw. Matrix
    private Random zufall;
    private Simulation s;
    private double schimmwachs, bacwachs;
    private int bacanz, schimmanz;
    
    public Raster()
    {
        matrix = new Lebewesen[Simulation.BREITE+1][Simulation.HOEHE+1];
        zufall=new Random();
        for (int i=0; i<Simulation.BREITE+1; i++) {
            for (int j=0; j<Simulation.HOEHE+1; j++) {
                //übergebe Rasterreferenz, x-, sowie y-Wert der neuen Lebewesen im Raster
                matrix[i][j]=new Leer(this, i, j);
            }
        }
        
    }
    public void setChilliVanilli(double bacwachs, double schimmwachs, int bacanz, int schimmanz)
    {
        this.bacwachs = bacwachs; this.schimmwachs = schimmwachs;
        this.bacanz = bacanz; this.schimmanz = schimmanz;
    }
    public Lebewesen matrix(int i, int j)     //Überprüft ob Feld über dem Rand ist 
    {
        if(i>=0 && j>=0 && i<Simulation.BREITE && j<Simulation.HOEHE) return matrix[i][j];
        return null;
    }
    
    public void zufallstart(double bacwachs, double schimmwachs, int bacanz, int schimmanz)
    {
        setChilliVanilli(bacwachs, schimmwachs, bacanz, schimmanz);
        for (int x=0; x<bacanz; x++) {
            int i=zufall.nextInt(Simulation.BREITE);
            int j=zufall.nextInt(Simulation.HOEHE);
            matrix[i][j]=new Bakterium(this,i, j, 0.3);
        }
        
        for (int y=0; y<schimmanz; y++) {
            int i=zufall.nextInt(Simulation.BREITE);
            int j=zufall.nextInt(Simulation.HOEHE);
            matrix[i][j]=new Schimmelpilz(this, i, j, 0.2);
        }
    }
    
    public Lebewesen[][] getMatrix()
    {
        return matrix;
    }
    
    public void setzeSimulation(Simulation s0)
    {
        s=s0;
    }
    
    public Simulation getSimulation()
    {
        return s;
    }
}
